package cn.laoma.thread5.t5_003_Concurrent_Container;

import lombok.SneakyThrows;

import java.util.concurrent.LinkedTransferQueue;

/**
 * @program: ThreadDemos
 * @description: 传送阻塞队列
 * 1.和SynchronousQueue类似都是线程间传递数据用的
 * 2.和SynchronousQueue不同在于：
 * 1）它容量不为0，可以添加多个数据。
 * 2）它既可以像和SynchronousQueue那样死等一个传递过去的数据被另一个线程消费transfer；也可以放进去不用等待
 * @author: 老马
 * @create: 2021-10-03 21:51
 **/
public class T09_TransferQueue {

    @SneakyThrows
    public static void main(String[] args) {
        LinkedTransferQueue<String> queue = new LinkedTransferQueue<>();
        queue.add("aaa");
       // queue.transfer("aaa");
        queue.put("bbb");
        queue.put("ccc");
        new Thread(() -> {
            try {
                System.out.println(queue.take());
                System.out.println(queue.take());
                System.out.println(queue.take());
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }).start();
    }

}